todarosの@n DOW day順番実装
code:python
# Routine Group という単語を定義する
# - ('@1', '@1.md') のようなタプル
# - (prefix, filename)
# - filename には n 個のタスク行が書かれている
# - prefix は、各タスク行の先頭に付与する補足文字列
def file2list_from_routinegroups(routinegroups):
''' @params routinegroups routinegroupのリスト '''
result_outlines = []
for routinegroup in routinegroups:
prefix, filename = routinegroup
outlines = file2list(filename)
outlines = {}'.format(prefix, line) for line in outlines
result_outlines.extend(outlines)
return result_outlines
def sort_and_create_routinegroups(filenames):
# 一番自然な以下の順(出現頻度の多い順)にする.
# 1
# @1
# @2 系
# @3 系
# 2
# DOW 系
# 3
# day 系
order1_per1 = []
order1_per2 = []
order1_per3 = []
order2 = []
order3 = []
for filename in filenames:
if filename.startswith('@1'):
order1_per1.append(('@1', filename))
continue
if filename.startswith('@2'):
order1_per2.append(('@2', filename))
continue
if filename.startswith('@3'):
order1_per3.append(('@3', filename))
continue
if filename.endswith('day.md'):
order2.append(('Dow', filename)) continue
order3.append(('Day', filename)) outlines = []
outlines.extend(order1_per1)
outlines.extend(order1_per2)
outlines.extend(order1_per3)
outlines.extend(order2)
outlines.extend(order3)
return outlines
ファイル名のリストがあるとして、
1: sort_and_create_routinegroups で routinegroup をつくる
2: routinegroup一つずつを処理(ファイル読み込みと行マージ)する
つまり「ファイル名を "読み込みたい順" に整理」した後、そいつを上から順に読み込んでいる